package com.enjoyor.soa.traffic.api.service.dubbo.redis;

import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

//@Service(protocol = { "dubbo" })
public interface DubboRedisListService {
	/**
	 * 
	 * @Title: blpop
	 * @Description: 移出并获取列表的第一个元素， 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
	 * @param key
	 * @param timeout
	 * @return
	 * @return: String
	 */
	public ResultPojo blpop(String key,int timeout);
	/**
	 * 
	 * @Title: brpop
	 * @Description: 移出并获取列表的最后一个元素， 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
	 * @param key
	 * @param timeout
	 * @return
	 * @return: String
	 */
	public ResultPojo brpop(String key,int timeout);
	/**
	 * 
	 * @Title: lindex
	 * @Description: 通过索引获取列表中的元素
	 * @param key
	 * @param index
	 * @return
	 * @return: String
	 */
	public ResultPojo lindex(String key,int index);
	/**
	 * 
	 * @Title: llen
	 * @Description: 获取列表长度
	 * @param key
	 * @return
	 * @return: int
	 */
	public ResultPojo llen(String key);
	/**
	 * 
	 * @Title: lpop
	 * @Description: 移出并获取列表的第一个元素
	 * @param key
	 * @return
	 * @return: String
	 */
	public ResultPojo lpop(String key);
	/**
	 * 
	 * @Title: lpush
	 * @Description: 将一个或多个值插入到列表头部
	 * @param key
	 * @param values
	 * @return: void
	 */
	public ResultPojo lpush(String key,String[] values);
	/**
	 * 
	 * @Title: lpushx
	 * @Description: 将一个值插入到已存在的列表头部
	 * @param key
	 * @param value
	 * @return: void
	 */
	public ResultPojo lpushx(String key,String value);
	/**
	 * 
	 * @Title: lrange
	 * @Description: 获取列表指定范围内的元素
	 * @param key
	 * @param start
	 * @param end
	 * @return
	 * @return: List<String>
	 */
	public ResultPojo lrange(String key,int start,int end);
	/**
	 * 
	 * @Title: lrem
	 * @Description: 移除列表元素
	 * @param key
	 * @param count
	 * @param value
	 * @return: void
	 */
	public ResultPojo lrem(String key,int count,String value);
	/**
	 * 
	 * @Title: lset
	 * @Description: 通过索引设置列表元素的值
	 * @param key
	 * @param index
	 * @param value
	 * @return: void
	 */
	public ResultPojo lset(String key,int index,String value);
	/**
	 * 
	 * @Title: ltrim
	 * @Description: 对一个列表进行修剪(trim)，就是说，让列表只保留指定区间内的元素，不在指定区间之内的元素都将被删除。
	 * @param key
	 * @param start
	 * @param stop
	 * @return: void
	 */
	public ResultPojo ltrim(String key,int start,int stop);
	/**
	 * 
	 * @Title: rpop
	 * @Description: 移除并获取列表最后一个元素
	 * @param key
	 * @return
	 * @return: String
	 */
	public ResultPojo rpop(String key);
	/**
	 * 
	 * @Title: rpush
	 * @Description: 将一个或多个值插入到列表的尾部(最右边)。
	 * @param key
	 * @param values
	 * @return: void
	 */
	public ResultPojo rpush(String key,String[] values);
	/**
	 * 
	 * @Title: rpushx
	 * @Description: 将一个值插入到已存在的列表尾部(最右边)
	 * @param key
	 * @param value
	 * @return: void
	 */
	public ResultPojo rpushx(String key,String value);
}
